00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef DE_PLUGIN_HPP
00029 #define DE_PLUGIN_HPP
00030
00031 #include "deGlobalTypes.hpp"
00032
00033 #if defined(DEPLUGINS_DLL_EXPORTS) || defined(DESTINY3D_EXPORT_ALL)
00034 # define DEPLUGIN_API extern "C" DEDLL_EXPORT
00035 #elif defined(DESTINY3D_STATIC_LINK)
00036 # define DEPLUGIN_API extern "C"
00037 #else
00038 # define DEPLUGIN_API extern "C" DEDLL_IMPORT
00039 #endif
00040
00041 #ifdef USING_DESTINY3D
00042 #ifdef _DEBUG
00043 # ifdef DESTINY3D_STATIC_LINK
00044 # pragma comment(lib, "dePlugins_sd")
00045 # pragma comment(lib, "zlib-d")
00046 # else
00047 # pragma comment(lib, "dePluginsd")
00048 # endif //DESTINY3D_STATIC_LINK
00049 #else
00050 # ifdef DESTINY3D_STATIC_LINK
00051 # pragma comment(lib, "dePlugins_s")
00052 # pragma comment(lib, "zlib")
00053 # else
00054 # pragma comment(lib, "dePlugins")
00055 # endif //DESTINY3D_STATIC_LINK
00056 #endif //_DEBUG
00057 #endif //USING_DESTINY3D
00058
00059
00060
00061
00062 class IdePlugin;
00063 class IdePluginTwofish;
00064 class IdePluginRijndael;
00065 class IdePluginZLib;
00066 class IdePluginSHA1;
00067
00068
00069
00070
00071 extern "C"
00072 {
00073 DEPLUGIN_API IdePluginTwofish* IdePlugin_CreateTwofish();
00074 DEPLUGIN_API IdePluginRijndael* IdePlugin_CreateRijndael();
00075 DEPLUGIN_API IdePluginZLib* IdePlugin_CreateZLib();
00076 DEPLUGIN_API IdePluginSHA1* IdePlugin_CreateSHA1();
00077 }
00078
00079
00080
00081 DE3D_INTERFACE_(IdePlugin)
00082 {
00083 protected:
00084 virtual ~IdePlugin() {};
00085
00086 public:
00087 enum interface_t
00088 {
00089 iface_IdePlugin = 0,
00090 iface_IdePluginTwofish,
00091 iface_IdePluginRijndael,
00092 iface_IdePluginZLib,
00093 iface_IdePluginSHA1,
00094 iface_force_32bit = 0x7FFFFFFF
00095 };
00096
00097
00098 virtual void* GetInterface(IdePlugin::interface_t i) = 0;
00099
00100
00101 virtual int Release() = 0;
00102
00103
00104
00105
00106
00107 virtual deBoolean EncodeData(void *Buffer, DWORD Length, void *NewBuffer, DWORD *NewLength) = 0;
00108 virtual deBoolean DecodeData(void *Buffer, DWORD Length, void *NewBuffer, DWORD *NewLength) = 0;
00109
00110
00111 virtual DWORD MaxEncodeLength(DWORD Length) = 0;
00112 virtual DWORD MaxDecodeLength(void *Buffer) = 0;
00113
00114
00115 };
00116
00117
00118 DE3D_INTERFACE(IdePluginTwofish, IdePlugin)
00119 {
00120 protected:
00121 ~IdePluginTwofish() {};
00122
00123 public:
00124 enum Mode
00125 {
00126 ECB = 1,
00127 CBC,
00128 CFB1,
00129 };
00130
00131
00132 virtual deBoolean SetKey(void *KeyBuffer, long Bitsize) = 0;
00133 virtual deBoolean SetIV(void *IVBuffer, long Length) = 0;
00134 virtual deBoolean SetMode(Mode CipherMode) = 0;
00135 virtual deBoolean SetRounds(int NumberRounds) = 0;
00136 };
00137
00138
00139 DE3D_INTERFACE(IdePluginRijndael, IdePlugin)
00140 {
00141 protected:
00142 ~IdePluginRijndael() {};
00143
00144 public:
00145
00146
00147 virtual deBoolean SetKey(void *KeyBuffer, long Bitsize) = 0;
00148 virtual deBoolean SetIV(void *IVBuffer, long Blocksize) = 0;
00149 };
00150
00151
00152 DE3D_INTERFACE(IdePluginZLib, IdePlugin)
00153 {
00154 protected:
00155 ~IdePluginZLib() {};
00156
00157 public:
00158 enum DataType
00159 {
00160 BINARY = 0,
00161 ASCII = 1,
00162 };
00163
00164
00165 virtual deBoolean SetType(DataType Type) = 0;
00166 virtual deBoolean SetCompressAmount(long Amount) = 0;
00167 };
00168
00169
00170 DE3D_INTERFACE(IdePluginSHA1, IdePlugin)
00171 {
00172 protected:
00173 ~IdePluginSHA1() {};
00174
00175 public:
00176 };
00177
00178 #endif